package com.lg.cms.entity;

import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

/**
 * <p>
 * 文章表
 * </p>
 *
 * @author lg
 * @since 2020-09-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@AllArgsConstructor
@NoArgsConstructor
public class Article implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 文章（栏目）分类表id(category)
     */
    private Integer categoryId;

    /**
     * 文章类型表id(article_type)
     */
    private Integer articleTypeId;

    /**
     * 发布者(超级用户表)id(super_user)
     */
    private Long superUserId;

    /**
     * 作者
     */
    private String author;

    /**
     * 标题
     */
    private String title;

    /**
     * 文章简介
     */
    private String description;

    /**
     * 文章内容（纯文本）
     */
    private String content;

    /**
     * 发布状态((true, 已发布), (false, 未发布))
     */
    private Boolean state;

    /**
     * 文章内容（富文本）
     */
    private String markdownContent;

    /**
     * 视频访问路径
     */
    private String videoUrl;

    /**
     * 图片json对象(List<ImageDTO>)
     */
    private String imageJson;

    /**
     * 封面图片
     */
    private String coverImage;

    /**
     * 文件类型表id（file_type_id）
     */
    private Integer fileTypeId;

    /**
     * 访问路劲
     */
    private String url;

    /**
     * 置顶
     */
    private Boolean top;

    /**
     * 开启评论
     */
    private Boolean comment;

    /**
     * 推荐
     */
    private Boolean recommended;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 乐观锁
     */
    @Version
    private Integer version;

    /**
     * 逻辑删除
     */
    @TableLogic
    private Boolean isDelete;

    /**
     * 基本数据验证
     * @return
     */
    public Boolean checkData(){
        if(StringUtils.isEmpty(this.title) || StringUtils.isEmpty(this.author) || this.categoryId == null
        ||articleTypeId == null || this.superUserId == null){
            return false;
        }else {
            return true;
        }
    }

}
